﻿using System;
using System.ServiceModel;
using Tinter.Application.Modules.Finance.DTOs;
using Tinter.Common.Pagination;

namespace Tinter.DistributedServices.Modules.Finance
{
    /// <summary>
    /// Provides services for financial module.
    /// </summary>
    [ServiceContract]
    public interface IFinanceService
    {
        /// <summary>
        /// Gets a paged list of user's expense projects.
        /// </summary>
        /// <param name="userId">User identifier</param>
        /// <param name="pageNumber"> </param>
        /// <param name="pageSize"> </param>
        /// <returns>PagedList contains items.</returns>
        [OperationContract]
        PagedItems<MyExpenseProjectDto> FindExpenseProjects(Guid userId, int pageNumber, int pageSize);

        /// <summary>
        /// Creates a new expense project.
        /// </summary>
        /// <param name="dtoMyExpenseProject">The expense project information</param>
        /// <returns>Added expense project representation</returns>
        [OperationContract]
        MyExpenseProjectDto CreateExpenseProject(MyExpenseProjectDto dtoMyExpenseProject);
    }
}
